package br.com.tiespec.model.Modelo;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import br.com.tiespec.model.Enum.SituProjeto;


@Entity
@Table(name="ti_projeto")
public class Projeto extends EntidadeGenerica {

	private static final long serialVersionUID = -4775648313965747304L;

	@Column(length=16, nullable=false)
	private String codigo;
	
	@Column(length=255, nullable=false)
	private String nome;
	
	@Column(length=4000, nullable=true)
	private String descricao;
	
	@Column(name="data_inicio_prevista")
	private Date dataInicioPrevista;
	
	@Column(name="data_fim_prevista")
	private Date dataFimPrevista;
	
	@Column(name="data_inicio_real")
	private Date dataInicioReal;
	
	@Column(name="data_fim_real")
	private Date dataFimReal;
	
	@Enumerated
	private SituProjeto situacao;
	
	@ManyToOne(fetch=FetchType.LAZY, optional=false)
	@JoinColumn(name="cliente_projeto_id")
	private ClienteProjeto clienteProjeto;
	
	@OneToMany(fetch=FetchType.LAZY, mappedBy="projeto")
	private List<Artefato> artefatos;
	
	@OneToMany(fetch=FetchType.LAZY, mappedBy="projeto")
	private List<DescricaoEstendida> descricoes;
	
	@Override
	public String toJson() {
		return null;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public ClienteProjeto getClienteProjeto() {
		return clienteProjeto;
	}
	
	public void setClienteProjeto(ClienteProjeto clienteProjeto) {
		this.clienteProjeto = clienteProjeto;
	}
	
	public List<Artefato> getArtefatos() {
		return artefatos;
	}
	
	public void setArtefatos(List<Artefato> artefatos) {
		this.artefatos = artefatos;
	}
	
	public List<DescricaoEstendida> getDescricoes() {
		return descricoes;
	}
	
	public void setDescricoes(List<DescricaoEstendida> descricoes) {
		this.descricoes = descricoes;
	}

	public Date getDataInicioPrevista() {
		return dataInicioPrevista;
	}

	public void setDataInicioPrevista(Date dataInicioPrevista) {
		this.dataInicioPrevista = dataInicioPrevista;
	}

	public Date getDataFimPrevista() {
		return dataFimPrevista;
	}

	public void setDataFimPrevista(Date dataFimPrevista) {
		this.dataFimPrevista = dataFimPrevista;
	}

	public Date getDataInicioReal() {
		return dataInicioReal;
	}

	public void setDataInicioReal(Date dataInicioReal) {
		this.dataInicioReal = dataInicioReal;
	}

	public Date getDataFimReal() {
		return dataFimReal;
	}

	public void setDataFimReal(Date dataFimReal) {
		this.dataFimReal = dataFimReal;
	}
	
	public SituProjeto getSituacao() {
		return situacao;
	}
	
	public void setSituacao(SituProjeto situacao) {
		this.situacao = situacao;
	}
}